<?php

/**
 * グローバルナビ住所用Utilクラス
 */
class Apm_Util_GlobalNavi_Jyusyo {

	private $searchType = null;
	private $prefCdList = null;
	private $cityCdList = null;
	private $townCdList = null;
	private $params = null;
	
	function __construct()
	{
		$this->params = array();
		
		$this->searchType = Apm_Session_GlobalNavi::getSearchType();
		$this->prefCdList = Apm_Session_GlobalNavi::getPrefCdList();
		$this->cityCdList = Apm_Session_GlobalNavi::getCityCdList();
		$this->townCdList = Apm_Session_GlobalNavi::getTownCdList();
		$this->basicList = Apm_Session_GlobalNavi::getBasicList();
		
		// 検索区分を設定
		Apm_Session_GlobalNavi::setSearchType(Apm_Config_Search::SRHKBN_JYUSYO);
	}

	/**
	 * 画面遷移判定
	 */
	public function transitionJudge()
	{
		//基本項目パラメータをセット
		$this->params = Apm_Util_GlobalNavi_Common::setBasicParams($this->basicList);
		//その他パラメータをセット
		$this->params['SrhKbn'] = Apm_Config_Search::SRHKBN_JYUSYO;

		//  地図検索から遷移してきた場合
		if ($this->searchType == Apm_Config_Search::SRHKBN_CHIZU)
		{
			// 都道府県判定 
//			$this->prefJudge();
			if (!$this->prefJudge()) {
				return $this->params;
			}
			// 市区町村判定
//			$this->cityJudge();
			if(!$this->cityJudge()) {
				return $this->params;
			}
			// 町選択画面へリダイレクト
//			Apm_Util::redirect(Apm_Config_Search::URL_SELECT_JYUSYO, $this->params, false);
			return $this->params;
		}
		// 沿線・駅検索 OR 路線図検索から遷移してきた場合
		elseif ($this->searchType == Apm_Config_Search::SRHKBN_ENSENEKI || $this->searchType == Apm_Config_Search::SRHKBN_ROSENZU)
		{
			// 都道府県判定 
//			$this->prefJudge();
			if (!$this->prefJudge()) {
				return $this->params;
			}
			// 市区町村選択画面へリダイレクト
//			Apm_Util::redirect(Apm_Config_Search::URL_SELECT_JYUSYO, $this->params);
			return $this->params;
		}
		// 店舗検索から遷移してきた場合
		elseif ($this->searchType == Apm_Config_Search::SRHKBN_TENPO)
		{
			// 都道府県判定 
//			$this->prefJudgeTenpo();
			if(!$this->prefJudgeTenpo()) {
				return $this->params;
			}
			// 市区町村判定
//			$this->cityJudge();
			if(!$this->cityJudge()) {
				return $this->params;
			}
			// 町選択画面へリダイレクト
//			Apm_Util::redirect(Apm_Config_Search::URL_SELECT_JYUSYO, $this->params);
			return $this->params;
		}
		else
		{
			// 住所検索から遷移した場合、セッションクリア
			Apm_Session_GlobalNavi::clear();
//			Apm_Util::redirect(Apm_Config_Search::URL_SELECT_JYUSYO, $this->params);
			$this->params = array();
			return $this->params;
		}
	}
	/**
	 * 都道府県判定
	 */
	private function prefJudge()
	{
		// 都道府県コードが選択されていない場合,または三つ以上(店舗物件)選択した場合
		if (count($this->prefCdList) == 0 || count($this->prefCdList) > 3)
		{
			// 都道府県選択画面へリダイレクト
//			Apm_Util::redirect(Apm_Config_Search::URL_SELECT_JYUSYO, $this->params);
			$this->params = array();
			return false;
		}
		$this->params['PrefCd'] = $this->prefCdList;
		$this->params['prefcd_condition'] = Apm_Session_GlobalNavi::getPrefCdCondition();
		$this->params['first_check'] = Apm_Session_GlobalNavi::getFirstCheck();
		
		return ture;
	}
	
	/**
	 * 都道府県判定（店舗バージョン）
	 */
	private function prefJudgeTenpo()
	{
		// 都道府県コードが2件以上選択されている場合、状態をチェック
		if (count($this->prefCdList) > 1)
		{
			Apm_Util_GlobalNavi_Common::checkPrefCdSelectList($this->prefCdList, Apm_Session_GlobalNavi::getFirstCheck());
			Apm_Util_GlobalNavi_Common::checkCityCdSelectList($this->cityCdList, $this->prefCdList);
		}
		// 都道府県コードが選択されていない場合
		if (count($this->prefCdList) == 0)
		{
			// 都道府県選択画面へリダイレクト
//			Apm_Util::redirect(Apm_Config_Search::URL_SELECT_JYUSYO, $this->params);
			$this->params = array();
			return false;
		}
		$this->params['PrefCd'] = $this->prefCdList;
		$this->params['prefcd_condition'] = Apm_Session_GlobalNavi::getPrefCdCondition();
		$this->params['first_check'] = Apm_Session_GlobalNavi::getFirstCheck();
		
		return ture;
	}
	
	/**
	 * 市区町村判定
	 */
	private function cityJudge()
	{
		// 市区町村コードが選択されていない場合,または10以上(店舗物件)選択した場合
		if (count($this->cityCdList) == 0 || count($this->cityCdList) > 10)
		{
			// 市区町村選択画面へリダイレクト
//			Apm_Util::redirect(Apm_Config_Search::URL_SELECT_JYUSYO, $this->params);
			$this->params['CityCd'] = array();
			return false;
		}
		$this->params['CityCd'] = $this->cityCdList;

		return ture;
	}
	/**
	 * 町判定
	 */
	private function townJudge()
	{
		// 町コードが選択されていない場合
		if (count($this->townCdList) == 0)
		{
			// 町選択画面へリダイレクト
			Apm_Util::redirect(Apm_Config_Search::URL_SELECT_JYUSYO, $this->params);
		}
		$this->params['TownCd'] = $this->townCdList;
	}
}
?>
